package com.owen.count.down.latch.simple2;

import java.util.concurrent.CountDownLatch;

/**
 * CountDownLatch典型用法2：
 *   实现多个线程开始执行任务的最大并行性。
 *   注意是并行性，不是并发，强调的是多个线程在某一时刻同时开始执行。
 *   类似于赛跑，将多个线程放到起点，等待发令枪响，然后同时开跑。
 *   做法是初始化一个共享的CountDownLatch(1)，将其计数器初始化为1，多个线程在开始执行任务前首先 coundownlatch.await()，当主线程调用 countDown() 时，计数器变为0，多个线程同时被唤醒。
 */
public class Main2 {

    private static CountDownLatch countDownLatch=new CountDownLatch(1);

    public static void main(String[] args) {
        for (int i = 0; i < 100; i++) {
            Thread thread=new Thread(new MyRunnable2(countDownLatch,i));
            thread.start();
        }

//        try {
//            Thread.sleep(1000);
//        } catch (InterruptedException e) {
//            e.printStackTrace();
//        }

        countDownLatch.countDown();

        System.out.println("ok");
    }

}
